Behavior Abstractions to support Reverse Engineering
نویسندگان
چکیده
Most approaches for recovering objects from procedural code are exclusively based on static information. These approaches have the advantage to build on information easily available. However, with code that is not built around very strong and ubiquitous data structures, substantial portions of this code cannot be clearly assigned to one of the objects the object-oriented system is made of. Here, we discuss an approach where the uncertainties that necessarily appear with purely data-structure driven approaches can be reduced by establishing in addition to the static object model a dynamic object model. The merits of the approach extend object recovery though. We consider the creation of event-state diagrams also useful for software redocumentation as well as for general program understanding. keywords: object recovery, program understanding, redocumentation, software reuse
منابع مشابه
Dynamix - a Meta-Model to Support Feature-Centric Analysis
Many researchers have identified the potential of exploiting domain knowledge in a reverse engineering context. Features are abstractions that encapsulate knowledge of a problem domain and denote units of system behavior. As such, they represent a valuable resource for reverse engineering a system. The main body of feature-related reverse engineering research is concerned with feature identific...
متن کاملA Practical Formal Model for Safety Analysis in Capability-Based Systems
We present a formal system that models programmable abstractions for access control. Composite abstractions and patterns of arbitrary complexity are modeled as a configuration of communicating subjects. The subjects in the model can express behavior that corresponds to how information and authority are propagated in capability systems. The formalism is designed to be useful for analyzing how in...
متن کاملTIE: Principled Reverse Engineering of Types in Binary Programs
A recurring problem in security is reverse engineering binary code to recover high-level language data abstractions and types. High-level programming languages have data abstractions such as buffers, structures, and local variables that all help programmers and program analyses reason about programs in a scalable manner. During compilation, these abstractions are removed as code is translated d...
متن کاملReverse Engineering of Distributed System Architecture – a Case Study
To effectively reason about an existing software system it is often necessary to reverse engineering architectural information about the system from its implemented software artifacts. This process is particularly challenging for distributed systems since their architecture are specified in terms of runtime abstractions whose implementation is notoriously difficult to detect using existing reve...
متن کاملMDA-Based Reverse Engineering
The most known definition of reverse engineering was given by Chikofsky and Cross (1990): “the process of analyzing a subject system to (i) identify the system’s components and their interrelationships and (ii) create representations of the system in another form or at a higher-level of abstraction”. Reverse engineering is the process of discovering and understanding software artifacts or syste...
متن کامل